class code3 {
    //dp问题:优化空间版
    public int minFlipsMonoIncr(String s) {
        int n = s.length();
        //当前下标为0和1的最小翻转次数
        int dp0 = 0;
        int dp1 = 0;

        //初始化
        char c = s.charAt(0);
        if(c=='0') {
            dp1 = 1;
        } else {
            dp0 = 1;
        }

        //求出dp
        for(int i=1;i<n;i++) {
            char ch = s.charAt(i);
            if(ch=='0') {
                dp1 = Math.min(dp0,dp1)+1;
            } else {
                dp1 = Math.min(dp1,dp0);
                dp0++;
            }
        }

        return Math.min(dp0,dp1);
    }
}